Strainer 0.8 by Paul R. Potts 11/8/93 11:25 a.m.

description for online services:

Strainer 0.8 is the latest release of the Strainer utility, adding
several new features. Strainer is designed to let you easily
mark and remove entries from your Newton's storage. This can
help you to get around a bug in the Datebook which makes it
difficult to delete certain entries, or to remove outdated entries
in order to keep as much memory free as possible. 

New features in version 0.8:
- You can now mark entries in multiple soups and strain them
all at once.
- I now handle straining of items on storage cards, if present.
- Strainer now has dialogs to ask you what you want to do if
you close the app before straining out the entries you have
marked.
- You can browse and mark entries in the to-do list and Names
- I have fixed a bug in 0.7 that caused errors when trying to
browse soups and no storage card was present.

contact: potts@oit.itd.umich.edu, Compuserve: 71561,3362

-----------------------------------------------------------

The first version of Strainer that I released (0.3) was completed 
and sent to the net on my birthday, 9-26. I was happy to celebrate
my 26th birthday by sending my first completed Newton application 
into the world. I hope to be able to provide many more useful
and interesting programs in the future.

Strainer is a utility that allows the user to browse through three
Newton system soups, called Calendar, Calendar Notes, and Repeat
Meetings. They can see old, obsolete, or incorrect entries, mark
them for deletion, and delete them. Strainer is a little easier
to use than walking around trying to delete everthing in the datebook,
and it can also be used to get rid of entries in the datebook which
can't be removed due to a few bugs in the Calendar. (Yes, PIE is
aware of these bugs and they will be fixed in a future release).
Users might want to use Strainer as a means of keeping as much
memory free as possible; old datebook entries take up room in 
memory, so it makes sense to delete them if you really aren't going
to be needing them any more.

Strainer is written using the Newton Tool Kit, which I got at the
Boston MacWorld Newton launch. I'm very new to Newton programming,
like most developers, and so I'm very aware that, although strainer
seems to work, there still may be lurking bugs. Also, I know that
my NewtonScript code is very inefficient; in particular, I'm using
a very inefficient search method in the browser. I have plans to
speed this up greatly in the future. (It isn't your Newton that is 
so slow, it's my code). In a future release, I hope to have the code
cleaned up and looking nice and to distribute the source code as
an example for other Newton programmers who are trying to work with
soups.

VERSION INFORMATION

Version 0.3:

First release.

Version 0.4:

- actually included something in the READ ME FIRST file; in the
0.4, it went out blank because of a dumb mistake on my part.

- fixed weird, hard-to-pin-down bug where checked items were
becoming unchecked after walking back through a number of them.
(this could result in the user being unable to change their minds
and uncheck an item). The reason the bug was hard to find is that
it was actually two bugs. When I fixed the first bug, the second
bug was still active, making me think that my fix hadn't helped.
The opposite thing happened when I fixed the second bug.

- my views no longer float, so you can now bring up another window
on top of them.

- made some cosmetic improvements.

Version 0.5 (not released):

Made it possible to select items in multiple soups for straining. 

Added a test so that if we close Strainer with items selected, a dialog 
comes up asking you if you want to delete the items before closing or forget
their marked-for-deletion status. Cleaned up organization of code a bit.

version 0.6 (not released):

Added support for straining the to-do list soups.

Cleaned up the code a lot; reduced app size by removing redundant functions;
now using simpler path expressions.

version 0.7:

I now use Union Soups so if you have a card in the slot with items on it,
you can browse and delete those items along with ones on the internal store.

version 0.8:

Fixed a bug which caused an "array out of bound" (-48205) if you tried to
browse with no memory card installed. Apparently most of the people
using Strainer had cards installed, but I did get one report of this problem
which helped me fix it. 

Rebuilt with NTK version 1.0b6, which is much nicer to use (speed of builds
has been improved a great deal).

NOTES ON USING STRAINER:

- I do support union soups, but I'm not yet doing extensive checking,
so there are some things that might cause problems: for example, don't
yank out a card if you're browsing items on it; if you try to strain out
items on a card that is write-protected, you'll probably get an error,
since I don't check for that yet. I'll try to handle all the obvious 
conditions in a future release.

- Close the datebook before starting Strainer; otherwise, if you
strain out entries that are visible in the datebook, the datebook
won't update its display until you close it an re-open it (technical
reason: the datebook doesn't respond to the soupChanged message, so
I don't bother to notify it).

- If you find ink entries in your calendar soup, they aren't
supposed to be there; remove them. Strainer will say <this
entry is ink>. These entries are apparently in the soup because
of a known bug in the Calendar.

Things remaining to fix:

I don't know of any real bugs remaining. There are a number of missing
features:

- I want to support faster browsing and deleting. Right now, I'm using a
soup to keep track of marked entries; it would be faster to use and
array, so I'll probably do this in the future. Also, my method of searching
for marked entries is extremely inefficient. I'll speed this up in a future
release.

- Some of the features I'm thinking of adding: a cleaner interface, a method 
of seeing how many entries are in the soup and how far through them you are,
and an Overview mode.  However, I also want Strainer to remain a small
application, which means not going overboard on features. If there's a 
particular change or feature you want to see, please let me know.